"""
@author: dlf
@file: 2023-04-13-面向对象-三乐购物系统.py
@time: 2023/4/13 15:55
"""

#购物系统类    类属性 -- 公告属性，在这体现地不太明显
#实例属性
# 商品信息
# 系统说明信息
#  当前用户 -- 存放多个用户 没设定用户类用字典,列表存放即可
#方法
#   登录
#   注册
#   查看商品
#   添加购物车
#   结算

#用户类   设定了用户类则实例化，用对象来干活
#实例属性
    # 名字
    # 密码
    # 钱
    # 购物车
#方法
# user class
class User:
    def __init__(self,name,passwd,init_amount):
        self.name = name
        self.passwd = passwd
        self.init_amount = init_amount
        self.shopping_car = {}

#函数命名 shopping_system
class ShoppingSystem:
    def __init__(self,goods_info,sys_info):    #先想好用什么容器类型去保存
        self.goods_info = goods_info
        self.sys_info = sys_info
        self.userdict = {}     #一开始不知道有哪些用户而是需要去注册

    def register(self,name,passwd,initial_amount):      #初始化金额

        # 在User里实例化一个对象之后，放入字典name作为key
        if name not in self.userdict:
            # 创建一个新用户，实例化User类   //实例       User类和变量名别取同样
            user = User(name, passwd, initial_amount)
            #把名字作为key， user对象作为value        ，之前3.30那个是字典包字典
            self.userdict[name] = user
        else:
            print("用户已存在")

    def login(self,name,passwd):
        if name in self.userdict and self.userdict[name]['passwd'] == passwd:
            print("登录成功")
        else:
            print("账户或密码错误")

fruit_goods = {
    'F0001':{"name":"苹果","price":8},
    'F0002':{"name":"香蕉","price":4}
}

medicine_goods = {
    'M0001':{"name":"奥司他韦","price":60},
    'M0002':{"name":"抗病毒口服液","price":30}
}
system1 =  ShoppingSystem(fruit_goods,"水果购物系统")
system2 = ShoppingSystem(medicine_goods,"药品购物系统")

system = [system1,system2]

while 1:
    print("当前平台已有购物系统如下:")
    for k,v in enumerate(system):  #enumerate  获取两个值，k  -- 获取下标， v--获取值
        print(f"{k}.{v.sys_info}")          #k下标从0开始  v.sys_info -- v-system  打印的是那个对象，就像a= 10打印的是10，而不是a
    c1 = input("请输入你的选择(按q退出):")    #c1就是所输入的下标，选择哪个系统
    if c1 == "q":
        break
    if c1.isdigit() and int(c1) < len(system):
        c1 = int(c1)
        current_system = system[c1]   #赋了下值而已，来表示当前系统。也可以不用这样，直接用下标，
        print(f"欢迎进入{system[c1].sys_info}".center(40,"*"))   #center 用来填充一下
        while 1:
            c2 = input("1.登录\n2.注册\n请输入你的选择(按q退出):")
            if c2 == "q":
                break
            if c2 =="1":
                name,passwd = input("输入账户名和密码(用空白分割):").split()
                current_system.login(name,passwd)
            elif c2 =="2":
                name,passwd,amount = input("请输入你的名字，密码和初始金额(用空白分割)").split()
                current_system.register(name,passwd,amount)
                print(f"当前系统用户有:{current_system.userdict}")
            else:
                print("输入有误!")
    else:
        print("输入有误，请重新输入！")


